CSCIĀ 0013. Programming Concepts and Methodology II

Units: 3
Prerequisite: Completion of CSCI 12 with grade of "C" or better
Hours: 72 (54 lecture, 18 laboratory)
Application of software engineering techniques to the design and development of large programs; data abstraction and structures and associated algorithms. (C-ID COMP 132) (CSU, UC)

CSCI 0013 - Programming Concepts and Methodology II

http://catalog.sierracollege.edu/course-outlines/csci-0013/

Catalog Description DESCRIPTION IS HERE: Prerequisite: Completion of CSCI 12 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Application of software engineering techniques to the design and development of large programs; data abstraction and structures and associated algorithms. (C-ID COMP 132) (CSU, UC) Units 3 Lecture-Discussion 54 Laboratory 18 By Arrangement Contact Hours 72 Outside of Class Hours Course Student Learning Outcomes Implement linear lists with arrays and linked objects. Write programs that use the stack and queue data structures, based on provided specifications. Produce intermediate-sized programs using Object-Oriented design principles, with a combination of written and provided code. Identify effective techniques to test, debug, and document larger programs. Write a program that uses recursive algorithms operating on a binary tree. Course Content Outline I. Fundamental data structures A. Primitive types B. Arrays C. Records D. Strings and string processing E. Data representation in memory F. Static, stack, and heap allocation G. Run-time storage management H. Pointers and references I. Linked structures J. Implementation strategies for stacks, queues, and hash tables K. Implementation strategies for trees L. Strategies for choosing the right data structure II. Recursion A. The concept of recursion B. Recursive mathematical functions C. Simple recursive procedures D. Divide-and-conquer strategies E. Recursive backtracking F. Implementation of recursion III. Declarations and types A. The conception of types as a set of values together with a set of operations B. Declaration models (binding, visibility, scope, and lifetime) C. Overview of type-checking D. Garbage collection IV. Abstraction Mechanisms A. Procedures, functions, and iterators as abstraction mechanisms B. Parameterization mechanisms (reference vs. value) C. Activation records and storage management D. Type parameters and parameterized types - templates or generics E. Modules in programming languages V. Object-oriented programming A. Object-oriented design B. Encapsulation and information-hiding C. Separation of behavior and implementation D. Classes and sub-classes E. Inheritance (overriding, dynamic dispatch) F. Polymorphism (sub-type polymorphism vs. inheritance) G. Class hierarchies H. Collection classes and iteration protocols I. Internal representations of objects and method tables VI. Software design A. Fundamental design concepts and principles B. Design strategy Course Objectives Course Objectives Lecture Objectives: 1. Discuss the representation and use of primitive data types and built-in data structures. 2. Describe how the data structures are allocated and used in memory. 3. Describe common applications for each data structure. 4. Compare alternative implementations of data structures with respect to performance. 5. Compare and contrast the costs and benefits of dynamic and static data structure implementations. 6. Choose the appropriate data structure for modeling a given problem. 7. Describe the concept of recursion and give examples of its use. 8. Identify the base case and the general case of a recursively defined problem. 9. Compare iterative and recursive solutions for elementary problems such as factorial. 10. Describe the divide-and-conquer approach. 11. Describe how recursion can be implemented using a stack. 12. Discuss problems for which backtracking is an appropriate solution. 13. Determine when a recursive solution is appropriate for a problem. 14. Explain the value of declaration models, especially with respect to programming-in the-large. 15. Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size. 16. Discuss type incompatibility. 17. Defend the importance of types and type-checking in providing abstraction and safety. 18. Evaluate trade-offs in lifetime management (reference counting vs. garbage collection). 19. Explain how abstraction mechanisms support the creation of reusable software components. 20. Defend the importance of abstractions, especially with respect to programming-in-the-large. 21. Describe how the computer system uses activation records to manage program modules and their data. 22. Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism. 23. Describe how the class mechanism supports encapsulation and information hiding. 24. Compare and contrast the notions of overloading and overriding methods in an object-oriented language. 25. Explain the relationship between the static structure of the class and the dynamic structure of the instances of the class. 26. Describe how iterators access the elements of a container. 27. Discuss the properties of good software design. 28. Compare and contrast object-oriented analysis and design with structured analysis and design. Laboratory Objectives: 1. Implement the user-defined data structures in a high-level language. 2. Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables. 3. Implement, test, and debug simple recursive functions and procedures. 4. Demonstrate different forms of binding, visibility, scoping, and lifetime management. 5. Demonstrate the difference between call-by-value and call-by-reference parameter passing. 6. Design, implement, test, and debug simple programs in an object-oriented programming language. 7. Design, implement, and test the implementation of "is-a" relationships among objects using a class hierarchy and inheritance. Methods of Evaluation Objective Examinations Problem Solving Examinations Projects Reading Assignments 1. Read and study the chapter on fundamental data structures. Focus your reading on the stack and queue. Be prepared to compare and contrast these two structures and their various implementations in class. 2.Read and study the handout on overloading and overriding. Compare and contrast the notions of overloading and overriding methods in an object-oriented language and be prepared to discuss in class. Writing, Problem Solving or Performance Typical early lab assignment: Goals: Cutting a string into pieces.Counting words. Description Write two separate Java programs for cutting a string (sentence) into individual tokens (words). Part 1 Write a Java program that uses the StringTokenizer class (in java.util) to break a string into tokens. Your program should print each word from the string on a separate line. In addition, your program should print the number of tokens found in the string. You may assume the tokens in the string are separated by one or more spaces and the string is terminated with a period. This first program may be written entirely in a main method. Please use the string under test data to test your program. Part 2 Your second program should also slice a string into tokens, but without the aid of the StringTokenizer class. Using the charAt( ) method, and the string length constant, to tokenize the test data string. Add each token from the string into an ArrayList object (see the Java API under java.util). Your program can simply add each token to the ArrayList as the tokens are discovered. Other (Term projects, research papers, portfolios, etc.) Methods of Instruction Laboratory Lecture/Discussion Distance Learning Other materials and-or supplies required of students that contribute to the cost of the course.

Information Technology

http://catalog.sierracollege.edu/departments/infotech/

...CSCI 0012 Programming Concepts and Methodology I CSCI...Many Uses 3 MATH 0013 Elementary Statistics 4...